{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 元组\n",
    "# 元组与列表类似，不同之处在于元组的元素不能修改。元组写在小括号 () 里，元素之间用逗号隔开。\n",
    "# 元组中的元素类型也可以不相同：\n",
    "# tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )\n",
    "#元组与字符串类似，可以被索引且下标索引从0开始，-1 为从末尾开始的位置。也可以进行截取（看上面，这里不再赘述）。\n",
    "#元组只支持查询操作，不支持修改、添加、删除操作。\n",
    "# #字典\n",
    "# dict = {'name': 'runoob','code': 1,'site': 'www.runoob.com'}\n",
    "# #查看字典元素  \n",
    "# print(dict['name']) #dict[key]  key不存在会报错 \n",
    "# print(dict.get('site'))#get()方法，如果key不存在，可以返回None，或者自己指定的value\n",
    "# print(dict.get('site1'))\n",
    "# #修改字典元素\n",
    "# dict['name']='菜鸟教程'\n",
    "# #删除字典元素\n",
    "# del dict['name'] 键名不存在会报错\n",
    "# dict.clear() 清空字典\n",
    "# dic.pop('name')#存在则删除，不存在则报错\n",
    "# #添加字典元素\n",
    "# dict['name']='菜鸟教程'#存在则修改\n",
    "# dict['url']='www.runoob.com'#不存在则添加\n",
    "# #集合 Set 集合是无序不重复元素的序列。基本功能包括关系测试和消除重复元素。\n",
    "# set={1,2,3,4,5,6,7,8,9,10}\n",
    "# s1=set()#创建一个空集合\n",
    "# print(hash('a')) #hash()函数返回一个对象的哈希值，哈希值是这个对象在内存中的地址，哈希值不变，内存地址不变，哈希值不变。 集合无序，不可重复，所以内存地址不同，哈希值不同。\n",
    "# #集合常见操作：add 添加一个元素 remove 删除一个元素 pop 进行无序排序删除最后一个元素  updata 把传入的元素拆分放入集合中  &交集 |并集 差集 clear 清空集合 discard 删除一个元素 没有不进行任何操作\n",
    "# set1 = {1,2,3,4,5}\n",
    "# print(set1&set2)#交集\n",
    "# print(set1|set2)#并集\n",
    "# print(set1-set2)#差集\n",
    "# #集合的遍历\n",
    "# for i in set1:\n",
    "#     print(i)\n",
    "# 类型转换\n",
    "# int() 如果转换浮点数，只保留整数部分\n",
    "# float()  str()  tuple()  list()  set()  dict()  bool()\n",
    "# eval()  eval() 函数用来执行一个字符串表达式，并返回表达式的值。 eval() 可以实现list，tuple，dict与string之间的转换。\n",
    "# str1='[1,2,3,4,5]'#字符串\n",
    "# list1=eval(str1)#字符串转list\n",
    "# print(list1)\n",
    "# # 赋值 浅拷贝 深拷贝\n",
    "# list2=[1,2,3,4,5]\n",
    "# list3=list2\n",
    "# print(list2)\n",
    "# print(list3)\n",
    "# list2[0]=100\n",
    "# print(list2)\n",
    "# print(list3) #list2和list3是同一个list\n",
    "# #浅拷贝\n",
    "# import copy as cp\n",
    "# # list4=cp.copy(list2)\n",
    "# # print(list4)\n",
    "# # list2[0]=101\n",
    "# # print(list2)\n",
    "# # print(list4) #list2和list4不是同一个list\n",
    "# # print(id(list2))\n",
    "# # print(id(list4)) #id不同，说明不是同一个list\n",
    "# #深拷贝\n",
    "# list2=[1,2,[3,4,5]]\n",
    "# list5=cp.deepcopy(list2)\n",
    "# print(list5)\n",
    "# list2[2][1]=102\n",
    "# print(list2)\n",
    "# print(list5) #list2和list5不是同一个list\n",
    "#可变对象与不可变对象\n",
    "#可变对象：list，dict，set 修改值，不会修改内存地址\n",
    "# list2=[1,2,3,4,5]\n",
    "# print(id(list2))\n",
    "# list2[0]=100\n",
    "# print(id(list2))\n",
    "#不可变对象：int，float，bool，str，tuple 修改会生成一个新的值，从而分配一个新的内存空间\n",
    "# 函数\n",
    "# def 函数名(参数列表):#参数列表可以为空:\n",
    "#     函数体\n",
    "#     return 返回值\n",
    "def add(a,b):\n",
    "    return a+b\n",
    "print(add(1,2))\n",
    "def add(a,b=10):#默认参数值\n",
    "    return a+b\n",
    "print(add(1))\n",
    "def add(*args): #可变参数\n",
    "    return sum(args)\n",
    "print(add(1,2,3,4,5))\n",
    "def func(**kwargs): #关键字参数 将字典转换为关键字参数\n",
    "    return kwargs\n",
    "print(func(a=1,b=2,c=3))# 返回字典\n",
    "print(func()) #返回空字典\n",
    "def add(a,b):\n",
    "    return a,b #返回多个值  返回的是一个元组\n",
    "print(add(1,2))#返回的是一个元组\n"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
